# 定义编译器
CXX = g++

# 定义编译选项
CXXFLAGS = -std=c++11

# 定义目标文件
TARGETS = a.out create_dict create_web preprocess_web

# 定义对象文件

OBJS_MAIN = main.o Configuration.o SplitTool.o SplitToolCppJieba.o DictProducer.o DirScanner.o FileProcessor.o PageLib.o PageLibPreprocessor.o tinyxml2.o WebPage.o
OBJS_CREATE_DICT = create_dict.o Configuration.o SplitTool.o SplitToolCppJieba.o DictProducer.o DirScanner.o
OBJS_CREATE_WEB = create_web.o Configuration.o PageLib.o FileProcessor.o DirScanner.o tinyxml2.o
OBJS_PREPROCESS_WEB = preprocess_web.o Configuration.o SplitToolCppJieba.o SplitTool.o PageLibPreprocessor.o WebPage.o

# 默认目标
all: $(TARGETS)

# 生成a.out
a.out: $(OBJS_MAIN)
	$(CXX) $(CXXFLAGS) -o $@ $^

# 生成 create_dict
create_dict: $(OBJS_CREATE_DICT)
	$(CXX) $(CXXFLAGS) -o $@ $^

# 生成 create_web
create_web: $(OBJS_CREATE_WEB)
	$(CXX) $(CXXFLAGS) -o $@ $^

# 生成 preprocess_web
preprocess_web: $(OBJS_PREPROCESS_WEB)
	$(CXX) $(CXXFLAGS) -o $@ $^

# 编译源文件
%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@

# 清理生成文件
clean:
	rm -f $(TARGETS) *.o

# 伪目标，不会被认为是文件
.PHONY: all clean

